package annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
/**
 * 注解中可以定义参数
 *         格式为:
 *         类型 参数名() [default 默认值]
 *         默认值是可选的，不是必须指定的。如果指定了默认值，那么使用注解时
 *         可以不传入该参数，此时参数使用这个默认值。
 *         如果参数没有指定默认值，那么使用注解时必须为这个参数赋值。
 *
 *         如果注解中只有一个参数时，参数名建议选取"value"。这样外界在使用
 *         该注解时，传递参数则不需要指定参数名，可以直接写作:
 *         @AutoRunMethod(5) 此时value的值就是5
 *
 *         如果该参数名不叫value，比如叫:
 *         int num() default 1;
 *         则使用注解时为该参数传递值时必须写作:
 *         @AutoRunMethod(num=5)
 *
 *
 * 一个注解中可以定义多个参数，当使用该注解时传参格式为:name=value
 *         @AutoRunMethod(num=1,name="张三")
 *         或
 *         @AutoRunMethod(name="张三",num=1) (传参顺序无关紧要)
 *
 * 并且两个以上参数(含两个)时，其中某一个参数名指定为value,传参时也
 *         必须指定该参数名
 *         例如:
 *         @AutoRunMethod(value=1,name="张三")
 *         或
 *         @AutoRunMethod(name="张三",value=1)
 * */
public @interface AutoRunMethod {
    int value() default 1;
//    String name();
}
